package com.example.administrator.activity.test.note;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

import com.example.administrator.activity.R;

import java.util.ArrayList;

public class Note2Activity extends AppCompatActivity implements AdapterView.OnItemClickListener,AdapterView.OnItemLongClickListener {
ListView listView;
ImageView image_add;

NoteBean noteBean;
NoteAdapeter noteAdapeter;
NoteSQLitehelp help;
ArrayList<NoteBean> arrayList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_note2);
        listView=findViewById(R.id.note_listview);
        image_add=findViewById(R.id.note_image_add);

        showDate();
//        图片的点击事件：跳转
        View.OnClickListener clickListener=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(Note2Activity.this,Record2Activity.class);
                /**
                 * 1.starActivity（intent）的跳转从A到B
                 * 2.若B页面要回传到数据，还得通过intent。putERxtra（）
                 * 2.startActivityForRsult
                 * 若B页面修改了数据，要回传数据到A页面
                 * 在A页面中重写onActivityResult方法，就会自动执行
                 *
                 * 重写onActivityResult
                 */
                startActivityForResult(intent,1);
            }
        };
        image_add.setOnClickListener(clickListener);
        listView.setOnItemClickListener(this);
        listView.setOnItemLongClickListener(this);

    }
    /**
     * 重写，自动执行
     * 记录页面做了修改之后，数据回传到首页
     * ListView数据展示
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==1&&resultCode==2){
//            ListVIew数据的展示、方法
            showDate();
        }
    }


    /**
     * ListView数据展示
     * 调用数据库工具类查询出数据list
     */

    private void showDate() {
        help=new NoteSQLitehelp(Note2Activity.this);
        arrayList=help.query();
        noteAdapeter=new NoteAdapeter(Note2Activity.this,arrayList);
        listView.setAdapter(noteAdapeter);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/**
 * 列表项点击之后的操作，传递参数，跳转
 * 获取当前点击的列表项
 */
noteBean= (NoteBean) listView.getItemAtPosition(position);
Intent intent=new Intent(Note2Activity.this,Record2Activity.class);
intent.putExtra("id",noteBean.getId());
intent.putExtra("content",noteBean.getContent());
intent.putExtra("time",noteBean.getTime());
startActivityForResult(intent,1);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
/**
 * 列表项长按之后的操作，弹出对话框
 *
 * 创建对话框步骤：
 * 1.创建一个AlerDIalo对象
 * 2.设置对话框标题
 * 3.设置对话框显示内容
 * 4.添加对话框的"确定"、"取消"按钮
 * 5.显示对话框
 */
        AlertDialog.Builder dialog=new AlertDialog.Builder(Note2Activity.this);
        dialog.setTitle("删除");
        dialog.setMessage("确定要删除此记录");
        dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                /**
                 * 对话框确定按钮的操作，从数据库中删除此条记录
                 * 1.获取当前长按的这条的记录
                 * 2.调用数据库操作类的删除方法，将该记录删除
                 * 3.更新ListView中数据
                 * Toast提示删除成功
                  */
                noteBean=arrayList.get(position);
                if (help.delete(noteBean.getId())){
                    arrayList.remove(position);
                    noteAdapeter.notifyDataSetChanged();
                    Toast.makeText(Note2Activity.this, "删除成功", Toast.LENGTH_SHORT).show();
                }
            }
        });
        dialog.setNegativeButton("取消",null);
        dialog.show();
        return false;
    }
}
